home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 23 / 023.d81 / up your alley (.txt) < prev   
Encoding:
Commodore BASIC  |  1986-01-01  |  14.0 KB  |  464 lines

  1. 1 iff=0thenf=1:gosub60000
  2. 5 xp=7.5 :rem * bowling    joe garrett
  3. 10 rem * 2/3/86
  4. 15 rem *** main program ***
  5. 18 gosub 4500: rem * get names
  6. 20 gosub 1000: rem * initialize all
  7. 25 gosub 3000: rem * draw alley
  8. 35 for fr=1  to 10
  9. 37 : for pl=1 to np
  10. 38 :   for bl=1 to 2
  11. 40 :     gosub 5000: rem * get height
  12. 50 :     gosub 6000: rem * roll ball
  13. 60 :     gosub 10000:rem * do score
  14. 63 :     if fr=10 and bl=2 and not xb(pl) then   gosub 9000: rem * 10th frame?
  15. 64 poke53280,0
  16. 65 :   next bl
  17. 67 :   gosub 3090 :  rem * reset pins
  18. 70 : next pl
  19. 80 next fr:gosub17000:rem* clear player
  20. 100 print"play again? (y/n)                      " : poke 198,0
  21. 105 print"                                      "
  22. 110 get t$: ift$="" then110
  23. 120 if t$="y" then run
  24. 125 if t$<>"n" then 110
  25. 127 poke928,0:print"[147][194]ye bye bowling..."
  26. 130 load"hello connect",8:end
  27. 998 rem  *** initialize everything ***
  28. 999 stop
  29. 1000 pokev+21,0:print "[147]wait...":u=rnd(-ti):eb$(1)=" ":eb$(2)=" "
  30. 1002 rem *** sprite data ***
  31. 1005 dim sc$(12,2,3) : rem * score array
  32. 1010 poke53280,0  : poke53281,12 :ap=102:poke53248+29,0
  33. 1015 forw1=1to12:forw2=1to2:forw3=1to2:sc$(w1,w2,w3)=" ":sc$(w1,w2,3)="   "
  34. 1017 nextw3:nextw2:nextw1
  35. 1020 dim pp(10) : rem * pin positions
  36. 1030 for t = 1 to 10
  37. 1040 read pp(t) : rem * read pins pos's
  38. 1050 next
  39. 1060 data 1335,1297,1377,1259,1339,1419,1221,1301,1381,1461
  40. 1070 for t1=1175 to 1181 : rem * make pins white
  41. 1080 for t2=0 to 240 step 40
  42. 1090 poke t1+t2+54272,1
  43. 1100 next t2
  44. 1110 next t1
  45. 1120 gosub 4000 : rem * score frames
  46. 1140 v=53248:poke2042,13:pokev+41,0
  47. 1370 rem *** direction data
  48. 1380 dr$(1)="[183]":dr$(2)="[197]":dr$(3)="[196]":dr$(4)="[192]":dr$(5)="[198]":dr$(6)="[210]"
  49. 1390 dr$(7)="[175]"
  50. 1990 gosub4530:return
  51. 2000 :
  52. 2998 rem *** draw alley ***
  53. 3000 print "  [154]                                    [152] "
  54. 3002 print "  [154]                                    [152] "
  55. 3005 for t=1 to 7
  56. 3010 print"  [152][158][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][152] "
  57. 3015 next t
  58. 3020 print "  [154]                                    [152] "
  59. 3022 print "  [154]                                    [152] "
  60. 3025 print"....[157][157].[157][157].[157][157]."
  61. 3090 for t = 1 to 10
  62. 3095 :  poke pp(t),81:pokepp(t)+54272,1
  63. 3100 next
  64. 3990 return
  65. 3992 pokepp(4),81:pokepp(7),81:pokepp(9),81:pokepp(10),81:bl=1:return
  66. 3996 :
  67. 3998 rem *** draw score frames ***
  68. 4000 print"[176][192][192][192][192][192][192][192][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][174]" : r=1
  69. 4010 print"[221]name      [221] 1 [221] 2 [221] 3 [221] 4 [221] 5 [221]"
  70. 4020 print"[171][192][192][192][192][192][192][192][192][192][192][219][192][178][192][219][192][178][192][219][192][178][192][219][192][178][192][219][192][178][192][179]"
  71. 4030 print"[221]          [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221]"
  72. 4040 print"[221]          [171][192][177][192][219][192][177][192][219][192][177][192][219][192][177][192][219][192][177][192][179]"
  73. 4050 print"[221]          [221]   [221]   [221]   [221]   [221]   [221]"
  74. 4060 rem print"[171][192][192][192][192][192][192][192][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][179]"
  75. 4070 if r=1 then r=2 : goto 4020
  76. 4075 print"[221]          [221]   [221]   [221]   [221]   [221]   [221]"
  77. 4080 print"[145][173][192][192][192][192][192][192][192][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][189]"
  78. 4090 pokev+21,0:return
  79. 4480 rem *** get names
  80. 4490 :
  81. 4500 if peek(850)<>7 or peek(851)<>255 then load"ball",8,1
  82. 4502 pokev+21,0:input"[147]1 or 2 players";np:if np<1 or np>2 then 4500
  83. 4503 input"[147]what is your name player 1";nm$(1)
  84. 4504 if np=1 then 4510
  85. 4505 input"[147]what is your name player 2";nm$(2)
  86. 4510 nm$(1)=left$(nm$(1),9)
  87. 4512 nm$(2)=left$(nm$(2),9)
  88. 4515 return
  89. 4525 rem *** print players names
  90. 4530 print"" nm$(1)
  91. 4532 print"" nm$(2)
  92. 4535 print"                                      "
  93. 4550 return
  94. 4980 rem *** input where to throw ball
  95. 4990 :
  96. 5000 pokev+21,0:gosub5200:dn$="[157] [153]":tc=3 :ht=1 :dn=4 : sp=23:sr=0
  97. 5005 :p0=0:p1=0:p2=0:p3=0:p4=0:p5=0:p6=0:p7=0:p8=0:p9=0:fs=0:gosub 17000
  98. 5010 printdn$;:fort=1 to dn:print"";:next t: print dr$(tc);
  99. 5020 get t$:if t$="" then 5020
  100. 5030 if t$=chr$(13) then sp=sp+dn/2-1:goto 5300
  101. 5040 if t$="" then sp=sp+1:tc=tc+1
  102. 5045 if t$="s" then fs=-1:sp=20:goto5300
  103. 5050 if t$="[145]" then sp=sp-1:tc=tc-1
  104. 5060 if sp<0  then sp=0: dn=1:tc=1:goto5010
  105. 5070 if sp=49 then sp=48:dn=7:tc=7:goto5010
  106. 5080 if tc=8 then tc=1
  107. 5090 if tc=0 then tc=7
  108. 5100 dn=int(sp/7)+1: goto 5010
  109. 5200 print"align the green mark using cursor keys "
  110. 5210 print"press return when satisfied with mark":return
  111. 5300 print"[158]use space bar to curve ball during roll"
  112. 5310 print"                                      "
  113. 5320 print" [157] [157] [157] [157] [157] [157] [157] "
  114. 5330 return
  115. 5980 rem *** roll ball ***
  116. 5990 :
  117. 6000 pokev+4,0:pokev+16,0:y=sp+75:pokev+5,y:pokev+21,4
  118. 6002 gosub19500:rem *** ball roll sound
  119. 6005 forp=1to10:p(p)=32:nextp
  120. 6010 fort=1 to 255 step 3:pokev+4,t:pokev+5,y:y=y+rnd(1)*.5-.25
  121. 6030 gett$:ift$=" "then y=y-rnd(1)
  122. 6040 nextt:sl=0:if y>96andy<103 then sl=-1
  123. 6042 gosub6500: rem *** proc pin 1
  124. 6100 pokev+16,4:fort=1  to 11:pokev+4,t:pokev+5,y:nextt
  125. 6110 gosub 6700:rem *** proc row 2
  126. 6120 pokev+16,4:fort=12 to 27:pokev+4,t:pokev+5,y:nextt
  127. 6130 gosub 6900:rem *** proc row 3
  128. 6140 pokev+16,4:fort=28to43 :pokev+4,t:pokev+5,y:nextt
  129. 6150 gosub 7100:rem *** proc row 4
  130. 6154 fort8=7to10:w=pp(t8):ifpeek(w)=apthenpokew+54272,7
  131. 6155 if peek(pp(10))<>ap then pokepp(10)+54272,1
  132. 6156 next
  133. 6160 fort=44to86 :pokev+4,t:pokev+5,y:nextt
  134. 6170 gosub8050:gosub 8000: if ps=0 and fr<10 then bl=2
  135. 6180 pokes+4,0:pokes+11,0:return
  136. 6498 rem *** hit pin 1? ***
  137. 6500 if y>90 and y<109 then gosub20000:pokepp(1),ap:pokepp(1)+54272,7
  138. 6510 p1=-1:return
  139. 6698 rem *** knock down row 2 ***
  140. 6699 :
  141. 6700 j2=0:j3=0: ify>=117 or y<=81 then return
  142. 6705 ify>91 and y<107 then j2=-1:j3=-1:      goto6720
  143. 6710 if(y>81 and y<92) then j2=-1 :goto6720
  144. 6715 if(y>106 and y<117) then pokepp(3),ap:pokepp(3)+54272,7:return
  145. 6720 if j2 then pokepp(2),ap:pokepp(2)+54272,7
  146. 6725 if j3 then pokepp(3),ap:pokepp(3)+54272,7
  147. 6730 if y<98 andp1 then p6=-1:return
  148. 6735 ify>100 andp1 then p4=-1:return
  149. 6898 rem *** knock down row 3 ***
  150. 6899 :
  151. 6900 if (y<=73 or y >=125) then return
  152. 6902 gosub18000: gosub19000
  153. 6905 if y<=89 then pokepp(4),ap:goto6950
  154. 6910 if y<=92 then pokepp(4),ap:pokepp(5),ap:goto6940
  155. 6915 if y<=105 then pokepp(5),ap:goto6940
  156. 6925 if y<109 then pokepp(5),ap:pokepp(6),ap:goto6940
  157. 6930 if y<=124 then pokepp(6),ap
  158. 6940 ifp4 then pokepp(4),ap
  159. 6945 ifp6 then pokepp(6),ap
  160. 6947 rem  ifbl=2 then y=75
  161. 6950 :
  162. 6960 fort8=4to6:w=pp(t8):ifpeek(w)=apthen pokew+54272,7
  163. 6970 next:return
  164. 7098 rem *** knock down row 4 ***
  165. 7099 :
  166. 7100 pr=5:if (y<=66 or y >=132) then return
  167. 7105 if y<82 then pokepp(7),ap:pokepp(7)+54272,7:return
  168. 7110 if y<85 then pokepp(7),ap:pokepp(8),ap:pr=3:return
  169. 7115 if y<98 then pokepp(8),ap:pr=7:goto7150
  170. 7120 if y<101 then pokepp(8),ap:pr=2:pokepp(9),ap:goto7150
  171. 7125 if y<114 then pokepp(9),ap:pr=7:goto7150
  172. 7130 if y<117 then pokepp(9),ap:pr=3:pokepp(10),ap:goto7150
  173. 7135 pokepp(10),ap
  174. 7150 if bl=2 then pr=1
  175. 7153 gosub23000:if rd then p7=-1
  176. 7155 gosub23000:if rd then p8=-1
  177. 7160 gosub23000:if rd then p9=-1
  178. 7165 gosub23000:if rd then p0=-1
  179. 7170 if p7 thenpokepp(7),ap
  180. 7175 if p8 thenpokepp(8),ap
  181. 7180 if p9 thenpokepp(9),ap
  182. 7185 if p0 thenpokepp(10),ap
  183. 7190 if p1 and not sl then if int(rnd(1)*10)+1=5 then fs=-1
  184. 7200 if bl=1 then return
  185. 7210 if int(rnd(1)*500)<>428then return
  186. 7220 fs=-1:print"!!! i can't believe it !!!             "
  187. 7230 print"                                       "
  188. 7240 return
  189. 7251 if not sl then return
  190. 7999 rem *** count standing pins ***
  191. 8000 ps=0 :forf=1to10:if peek(pp(f))=81then ps=ps+1
  192. 8010 next f
  193. 8015 if bl=1 and ps=0 then sr=-1
  194. 8020 return
  195. 8050 if fs then fort=1 to 10:poke pp(t),ap:next
  196. 8060 return
  197. 8998 rem *** extra ball checker ***
  198. 8999 :
  199. 9000 xb(pl)=-1
  200. 9010 if sc$(10,pl,2)="[169][146]" then gosub3090:bl= 1:eb=-1
  201. 9020 if sc$(10,pl,2)="[214]" then gosub3090: bl= 1:eb=-1
  202. 9030 if sc$(10,pl,1)="[214]" then bl= 1:eb=-1
  203. 9040 return
  204. 9060 :
  205. 9998 rem *** scoring ***
  206. 9999 :
  207. 10000 if fr=10 then gosub 15000:              goto 10045
  208. 10002 if sr then sc$="[214]" :gosub 3090: goto 10047
  209. 10005 if bl=2 and ps=0 then sc$="[169][146]":        goto 10047
  210. 10010 if bl=1 then s1=10-ps:sc=s1
  211. 10020 if bl=2 then sc=10-ps-s1
  212. 10025 if bl=2 and fr=10 and sc$(10,pl,1)="[214]" and not xb(pl) then sc=10-ps
  213. 10027 if bl=2 and fr=10 and sc$(10,pl,1)="[214]" and eb(pl)<>10 then sc=10-ps-s1
  214. 10030 sc$=str$(sc):l=len(sc$):if sc=10 and xb(pl) then sc$="[214]"
  215. 10040 if l>1 then sc$=right$(sc$,1)
  216. 10045 if xb(pl) then eb$(pl)=sc$: eb=0:eb(pl)=sc: gosub 13000: goto 10050
  217. 10047 if bl=2 and ps=0 and sc$(10,pl,1)="[214]" then sc$="[214]"
  218. 10048 sc$(fr,pl,bl)=sc$:gosub 13000 :rem * do score
  219. 10050 s1$=sc$(8,pl,2):s2$=sc$(9,pl,2):s3$=sc$(10,pl,1):v8=val(sc$(8,pl,3))+10
  220. 10051 v8$=str$(v8):v8$=right$(v8$,3)
  221. 10052 ifs1$="[214]"ands2$="[214]"ands3$="[214]"andfr=10andbl=1 thensc$(8,pl,3)=v8$
  222. 10054 print"[158]";
  223. 10055 f1=fr-4:iff1<1 thenf1=1
  224. 10060 forqt=f1 to fr
  225. 10065 forgt=1 to 2
  226. 10067 if gt=2 then print"[157][157][157][157]";
  227. 10070 printsc$(qt,gt,1)""sc$(qt,gt,2)"[157][157][157]"sc$(qt,gt,3)"[145][145]";
  228. 10072 if gt=2 then print"[145][145][145][145]";
  229. 10073 next gt
  230. 10075 nextqt:eb=0
  231. 10080 if bl=2 then print"";
  232. 11895 print
  233. 11898 rem *** print frame #
  234. 11899 :
  235. 11900 f1=fr-4:iff1<1 thenf1=1
  236. 11905 print"";
  237. 11910 forqt=f1 to fr : fr$=str$(qt):fr$=right$(fr$,1)
  238. 11920 print fr$"";:next qt
  239. 11925 if fr <> 10 then return
  240. 11935 print"10";
  241. 11940 print"[145][192][192][174][157][157][157]  [221][157][157][157][178][192][179][157][221][157][157][157][177][192][179][157][157][157]  [221][157][157][157][178][192][179][157][221][157][157][157][177][192][179][157][157][157]  [221][157][157][157][192][192][189]"
  242. 11950 if (eb(1)=0 and eb(2)=0) then return
  243. 11960 print"[158]";
  244. 11965 if eb(1)<>0 then print eb$(1)
  245. 11967 print"[158]";
  246. 11970 if eb(2)<>0 then print eb$(2)
  247. 11973 rem bl=2
  248. 11975 return
  249. 11995 :
  250. 12998 rem *** compute score ***
  251. 12999 :
  252. 13000 ws=fr-2:if ws<1 then ws=1
  253. 13005 for ce=ws to fr
  254. 13007 if ce=10 then gosub 14000:next ce:return
  255. 13010 for e2=1 to np:pv=0:ct=0
  256. 13012 if ce>1 then if sc$(ce-1,e2,3)<>"   " then pv=val(sc$(ce-1,e2,3))
  257. 13014 s1$=sc$(ce,e2,1):s2$=sc$(ce,e2,2):s3$=sc$(ce,e2,3):s4$=sc$(ce+1,e2,1)
  258. 13015 if ce=8ands1$="[214]"ands4$="[214]"andsc$(10,e2,1)="[214]"thenct=-1:sc=30:return
  259. 13016 s5$=sc$(ce+1,e2,2)
  260. 13017 if s2$=" " then 13250
  261. 13018 ifs2$="[169][146]" then gosub 13500:goto13055
  262. 13020 if s3$<>"   " then 13250
  263. 13030 if((s2$>"/")and(s2$<":"))then s3=val(s1$)+val(s2$):ct=-1:goto 13070
  264. 13050 if s2$="[214]" then gosub 13710:            rem *** count strike
  265. 13055 if not ct then 13250
  266. 13060 if s3=0 then 13250
  267. 13070 if ce=1 and not sr then s3$=str$(s3):goto13210
  268. 13198 if ct then s3=pv+s3
  269. 13199 rem if ct and not na(pl) then na(pl)=-1:s3=s3+eb(pl)
  270. 13200 s3$=str$(s3)
  271. 13210 if len(s3$)<3 then s3$=s3$+" ":goto 13210
  272. 13213 s7$=sc$(ce+1,e2,1)
  273. 13220 if len(s3$)>3 then s3$=right$(s3$,3)
  274. 13230 sc$(ce,e2,3)=s3$
  275. 13250 next e2
  276. 13260 next ce : return
  277. 13498 rem *** count up a spare ***
  278. 13499 :
  279. 13500 if s5$="[214]" ors4$="[214]" then s3=20:ct=-1:return
  280. 13505 rem  if fr=10 then s4$=eb$(pl)
  281. 13510 dd=(s4$>"/" and s4$<":")
  282. 13520 if dd then s3=10+val(s4$):ct=-1:return
  283. 13530 if s4$=" " and s5$=" " then ct=0:return
  284. 13700 rem *** count up a strike
  285. 13710 s4$=sc$(ce+1,e2,2):s5$=sc$(ce+2,e2,2):s6$=sc$(ce+2,e2,1)
  286. 13711 if s4$="[169][146]" then s3=20:ct=-1:return
  287. 13712 if ce=8thengosub13900:ifqthenreturn
  288. 13713 if s4$=" " then ct=0:return
  289. 13714 s7$=sc$(ce+1,e2,1)
  290. 13715 if s7$="[214]" then gosub13800:return
  291. 13716 if s4$="[214]" and s5$=" " ands6$=" "    then ct=0: return
  292. 13720 if s4$="[214]" and s5$="[214]" then s3=30:ct=-1:return
  293. 13733 if s4$="[214]" and s6$<>" " then s3=20+val(s6$):ct=-1:return
  294. 13735 s3=10+val(s4$)+val(s7$):ct=-1:return
  295. 13740 :
  296. 13799 rem *** ninth frame strike with                 strike in 10th frame ***
  297. 13800 if s4$="[214]" then ct=-1:s3=30:return
  298. 13810 ct=-1:s3=20+val(s4$):return
  299. 13900 if sc$(8,pl,2)="[214]" andsc$(9,pl,2)="[214]" and sc$(10,pl,1)="[214]"then q=-1:sc=30
  300. 13910 q=0:return
  301. 13998 rem *** 10th frame scorer ***
  302. 14000 if sc$(9,pl,3)="   " then return
  303. 14010 pv=val(sc$(9,pl,3))
  304. 14020 s1=val(sc$(10,pl,1))
  305. 14030 s2=val(sc$(10,pl,2))
  306. 14040 s3=eb(pl):if eb$(pl)=" " then s3=0
  307. 14050 if sc$(10,pl,1)="[214]" then s1=10
  308. 14060 if sc$(10,pl,2)="[169][146]" then s1=0:s2=10
  309. 14070 if sc$(10,pl,2)="[214]" then s2=10
  310. 14080 if eb$(pl)="[169][146]" then s3=10:s2=0
  311. 14085 if eb$(pl)="[214]" then s3=10
  312. 14090 s=s1+s2+s3+pv:pv=0
  313. 14100 sc$=str$(s)
  314. 14110 sc$=right$(sc$,3)
  315. 14120 if xb(pl) then sc$(10,pl,3)=sc$
  316. 14125 if s1<>10 and s2 <> 10 then sc$(10,pl,3)=sc$
  317. 14130 return
  318. 14998 rem *** score frame 10 ***
  319. 14999 :
  320. 15000 if bl=1 and sr then sc$="[214]":fort=1to50:next:gosub3090: return
  321. 15010 if bl=2 and sr and not xb(pl) then sc$="[214]":gosub3090 :return
  322. 15015 if bl=2 and xb(pl)andps=0 andsc$(10,pl,2)="[169][146]" then sc$="[214]":return
  323. 15020 if bl=2 and xb(pl)andps=0 andsc$(10,pl,2)<>"[214]" then sc$="[169][146]":sr=0:return
  324. 15022 if bl=2 and xb(pl)andps=0 andsc$(10,pl,2)="[214]" then sc$="[214]":return
  325. 15025 ifbl=2andnotxb(pl)andps=0andsc$(10,pl,1)<>"[214]"thensc$="[169][146]":gosub3090: return
  326. 15030 if bl=2 and not xb(pl) and sc$(10,pl,1)="[214]" then gosub16200:return
  327. 15040 if bl=1 and not sr then sc=10-ps :      sz=sc
  328. 15050 if bl=2 and not sr and xb(pl) then      sc=10-sz-ps:eb(pl)=sc
  329. 15055 if bl=2 and not sr and xb(pl) and sc$(10,pl,2)="[169][146]" then sc=10-sy-ps
  330. 15065 if bl=2 and not sr and not xb(pl) then  sc=10-ps-sz:eb(pl)=sc
  331. 15100 sc$=right$(str$(sc),1) : return
  332. 16000 yl=val(sc$(10,pl,2))
  333. 16010 sc=10-yl-ps:sc$=str$(sc):sc$=right$(sc$,1)
  334. 16020 if ps=0 then sc$="[169][146]"
  335. 16030 return
  336. 16198 rem *** kjfkjg ***
  337. 16200 sc=10-ps:eb(pl)=sc:sc$=right$(str$(sc),1): sz=sc: return
  338. 16998 rem *** point to current player
  339. 16999 :
  340. 17000 if pl=1 then print"[149]>>>[157][157][157]   "
  341. 17005 if np=1 and fr<11 then return
  342. 17010 if pl=2 and np=2 then print"   [157][157][157][149]>>>"
  343. 17020 if pl=(np+1) then print"   [157][157][157]   "
  344. 17030 return
  345. 17998 rem *** animate 6 pin on spare
  346. 17999 :
  347. 18000 if bl<>2 or peek(pp(6))=ap or y<121 or y>126 then return
  348. 18010 poke1419,ap
  349. 18020 poke1379,81:poke1379+54272,1:::::::::::::::
  350. 18030 poke1379,ap:poke1379+54272,7
  351. 18040 poke1340,81:poke1340+54272,1:::::::::::::::
  352. 18050 poke1340,ap:poke1340+54272,7
  353. 18060 poke1300,81:poke1300+54272,1:::::::::::::::
  354. 18070 poke1300,ap:poke1300+54272,7
  355. 18080 poke1261,81:poke1261+54272,1:::::::::::::::
  356. 18090 poke1261,ap:poke1261+54272,7
  357. 18200 if (rnd(1)*10)<xpthen pokepp(7),ap
  358. 18210 if (rnd(1)*10)<xpthen pokepp(8),ap
  359. 18220 return
  360. 18998 rem *** animate 4 pin on spare
  361. 18999 :
  362. 19000 if bl<>2 or peek(pp(4))=ap or y>77 or y<72 then return
  363. 19010 poke1259,ap
  364. 19020 poke1299,81:poke1299+54272,1:::::::::::::::::::::::::::::::::::::::::::::
  365. 19030 poke1299,ap:poke1299+54272,7
  366. 19040 poke1340,81:poke1340+54272,1:::::::::::::::::::::::::::::::::::::::::::::
  367. 19050 poke1340,ap:poke1340+54272,7
  368. 19060 poke1380,81:poke1380+54272,1:::::::::::::::::::::::::::::::::::::::::::::
  369. 19070 poke1380,ap:poke1380+54272,7
  370. 19080 poke1421,81:poke1421+54272,1:::::::::::::::::::::::::::::::::::::::::::::
  371. 19090 poke1421,ap:poke1421+54272,7
  372. 19100 if ((rnd(1)*10)<xp) then pokepp(9),ap
  373. 19110 if ((rnd(1)*10)<xp) then pokepp(10),ap
  374. 19120 return
  375. 19498 rem *** ball roll sound
  376. 19499 :
  377. 19500 s=54272:ifgx=1thenpokes+4,129:pokes+11,129:return
  378. 19505 fort=stos+24:poket,0:next
  379. 19510 pokes+24,31:pokes+23,3
  380. 19520 pokes,25   :pokes+1,1
  381. 19530 pokes+5,0  :pokes+6,240
  382. 19540 pokes+21,0
  383. 19545 pokes+22,0  :pokes+4,129
  384. 19560 pokes+7,100  :pokes+8,1
  385. 19570 pokes+12,0  :pokes+13,240
  386. 19590 pokes+11,129:gx=1
  387. 19600 return
  388. 19980 rem *** animate pin 1 ***
  389. 19990 :
  390. 20000 if y<89 or y>109 or peek(pp(1))=apthen return
  391. 20010 if y>95 and y<103 then 20800
  392. 20020 if y<96 then 20500
  393. 20030 rem *** 1 pin flys upward ***
  394. 20040 poke1335,ap
  395. 20050 poke1297,81:poke1297+54272,1:::::::::::::::
  396. 20060 poke1297,ap:poke1297+54272,7
  397. 20070 poke1296,81:poke1296+54272,1:::::::::::::::
  398. 20080 poke1296,ap:poke1296+54272,7
  399. 20090 poke1259,81:poke1259+54272,1:::::::::::::::
  400. 20100 poke1259,ap:poke1259+54272,7
  401. 20110 poke1258,81:poke1258+54272,1:::::::::::::::
  402. 20120 poke1258,ap:poke1258+54272,7
  403. 20130 poke1220,81:poke1220+54272,1:::::::::::::::
  404. 20140 poke1220,ap:poke1220+54272,7
  405. 20150 if int(rnd(1)*10)<5then pokepp(7),ap:pokepp(10)+54272,7
  406. 20160 return
  407. 20500 rem *** 1 pin flys downward ***
  408. 20510 poke1335,ap
  409. 20520 poke1376,81:poke1376+54272,1:::::::::::::::
  410. 20530 poke1376,ap:poke1376+54272,7
  411. 20540 poke1377,81:poke1377+54272,1:::::::::::::::
  412. 20550 poke1377,ap:poke1377+54272,7
  413. 20560 poke1418,81:poke1418+54272,1:::::::::::::::
  414. 20570 poke1418,ap:poke1418+54272,7
  415. 20580 poke1419,81:poke1419+54272,1:::::::::::::::
  416. 20590 poke1419,ap:poke1419+54272,7
  417. 20600 poke1460,81:poke1460+54272,1:::::::::::::::
  418. 20610 poke1460,ap:poke1460+54272,7
  419. 20620 if int(rnd(1)*10)<5then pokepp(10),ap:pokepp(10)+54272,7
  420. 20630 return
  421. 20800 rem *** 1 pin flys backward ***
  422. 20810 poke1335,ap
  423. 20820 poke1336,81:poke1336+54272,1:::::::::::::::
  424. 20830 poke1336,ap:poke1336+54272,7
  425. 20840 poke1337,81:poke1337+54272,1:::::::::::::::
  426. 20850 poke1337,ap:poke1337+54272,7
  427. 20860 poke1338,81:poke1338+54272,1:::::::::::::::
  428. 20870 poke1338,ap:poke1338+54272,7
  429. 20880 poke1339,81:poke1339+54272,1:::::::::::::::
  430. 20890 poke1339,ap:poke1339+54272,7
  431. 20900 poke1341,81:poke1341+54272,1:::::::::::::::
  432. 20910 poke1341,ap:poke1341+54272,7
  433. 20920 return
  434. 23000 rem if bl=2 then pr=2:goto23010
  435. 23005 e=int(rnd(1)*10)+1
  436. 23010 if e<=pr then rd=-1:return
  437. 23020 rd=0:return
  438. 50000 rem ***
  439. 50005 py=99:px=1:v=53248:pokev+16,4
  440. 50010 pokev+21,4:pokev+4,px :pokev+5,py
  441. 50015 print"                [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"px,py;
  442. 50020 get t$:ift$="" then 50020
  443. 50030 ift$="" then py=py+1:goto50010
  444. 50035 ift$="," then px=px-1:ifpx=-1thenpx=0:goto50010
  445. 50040 ift$="[145]" then py=py-1:goto50010
  446. 50045 ift$="." then px=px+1:goto50010
  447. 50050 ift$=chr$(13) then pokev+21,0:return
  448. 50060 goto50010
  449. 60000 nm$="[202]oe [199]arrett":pr$="[213]p [217]our [193]lley"
  450. 60005 deffncn(n)=int(19-n/2)
  451. 60010 t$="                         ":c=0:c$="":print"[147]":poke53281,0
  452. 60015 printspc(7)""t$:printspc(7)"                         [146]"
  453. 60020 printtab(fncn(len(pr$)))"[145]"pr$
  454. 60025 printspc(7)""t$:print:printtab(18)"by"
  455. 60030 print:printspc(fncn(len(nm$)))"[158]"nm$""
  456. 60035 print:printspc(12)"[195]opyright 1986"
  457. 60040 print:print:print:print"     [204][207][193][196][211][212][193][210] is not public domain."
  458. 60045 print:print"  [208]lease respect the author's rights."
  459. 60050 print:print"      [208]ress space bar to continue."
  460. 60055 forcc=1to48:getk$:ifk$=" "then60070
  461. 60060 ifcc=1thenprintmid$(c$,c+2,1)"[145][145]";:c=not(c)
  462. 60065 next:goto60050
  463. 60070 print"[147]" c$chr$(142):return
  464.